#include<bits/stdc++.h>
#include"graph.h"
using namespace std;
int dis[205][205],n,d[205],fa[205],e[205][205],ans[205],col[245][5],qwq[205][205][5],tot;
bool del[205][205];
void dfs1(int cur,int fat){
	d[cur]=NumberOfRoads(),fa[cur]=max(LastRoad(),0),e[cur][fa[cur]]=fat;
	for(int i=1;i<=d[cur];i++)
		if(i!=fa[cur]){
			Move(i,2);
			int cc=Color();
			if(cc==1)
				e[cur][i]=++n,dfs1(n,cur);
			else if(cc==2)
				Move(LastRoad(),2);
			else
				del[cur][i]=1,Move(LastRoad(),3);
		}
	if(cur!=1)
		Move(fa[cur],3);
}
void dfs2(int cur,int tp){
	for(int i=1;i<=d[cur];i++)
		if(i!=fa[cur]&&!del[cur][i]){
			Move(i,col[cur][tp]);
			if(e[cur][i])
				dfs2(e[cur][i],tp);
			else
				qwq[cur][i][tp]=Color(),Move(LastRoad(),Color());
		}
	if(cur!=1)
		Move(fa[cur],3);
}
void Inspect(int R){
	tot=0,memset(dis,0x3f,sizeof(dis)),n=1,dfs1(1,0);
	for(int a:{1,2,3})
		for(int b:{1,2,3})
			for(int c:{1,2,3})
				for(int d:{1,2,3})
					for(int e:{1,2,3})
						col[++tot][0]=a,col[tot][1]=b,col[tot][2]=c,col[tot][3]=d,col[tot][4]=e;
	for(int i:{0,1,2,3,4})
		dfs2(1,i);
	for(int i=1;i<=n;dis[i][i]=0,i++)
		for(int j=1;j<=d[i];j++)
			if(!del[i][j]){
				if(!e[i][j]){
					for(int k:{0,1,2,3,4})
						e[i][j]=e[i][j]*3+qwq[i][j][k]-1;
					e[i][j]++;
				}
				dis[i][e[i][j]]=dis[e[i][j]][i]=1;
			}
	for(int k=1;k<=n;k++)
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
	for(int i=1;i<=n;i++)
		for(int j=i+1;j<=n;j++)
			ans[dis[i][j]]++;
	for(int i=1;i<=R;i++)
		Answer(i,ans[i]);
}